package edu.scau.sku.mapper;

import edu.scau.sku.domain.Sku;
import edu.scau.sku.vo.SkuVo;
import edu.scau.tool.annotation.RequestLog;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * Mapper接口
 */
@Mapper
public interface SkuMapper {

    /**
     * 查找所有
     * @return 列表
     */
    List<SkuVo> listAll();

    /**
     * 根据id查找一条数据
     * @param skuCode skuCode
     * @return Sku
     */
    SkuVo findSkuByCode(String skuCode);

    /**
     * 分页查找
     * @param sku 对象
     * @return 列表
     */
    List<SkuVo> listByPage(SkuVo sku);

    /**
     * 根据id更新一条数据
     * @param sku 对象
     * @return 影响行数
     */
    @RequestLog
    int updateSku(Sku sku);

    /**
     * 根据id删除一条数据
     * @param skuCode skuCode
     * @return 影响行数
     */
    @RequestLog
    int deleteSkuByCode(String skuCode);

    /**
     * 插入一条数据
     * @param sku 对象
     * @return 影响行数
     */
    @RequestLog
    int insertSku(Sku sku);

    /**
     * 查找所有库存为空的库存
     * @return
     */
    List<SkuVo> findAllStockEmpty();

    /**
     * 查看编号是否存在
     * @param skuCode
     * @return
     */
    int isExisted(String skuCode);
    @RequestLog
    int batchUpdateStock(@Param("skuMap") Map<String, Integer> skuMap);
    @RequestLog
    int batchAddStock(@Param(("skuMap")) Map<String, Integer> skuMap);
}
